package org.File;


import java.io.File;    
import java.io.FileWriter;  
import java.io.PrintWriter;  
import org.slf4j.Logger;  
import org.slf4j.LoggerFactory;  
  
 
public class FileOperate {  
	final static Logger logger = LoggerFactory.getLogger(FileOperate.class);  
    public FileOperate() {  
    }  
    /**  
     * 新建目录  
     * @param folderPath  
    *            String 如 c:/fqf  
     *   
    */ 
    public void newFolder(String folderPath) {        
    	try {  
            String filePath = folderPath;
            filePath = filePath.toString();  
            File myFilePath = new File(filePath);  
            if (!myFilePath.exists()) {  
            	try{
            	myFilePath.mkdir();  
            	}
            	catch (Exception e) 
            	{  
                    e.printStackTrace();  
                } 
            }  
		} 
    	catch (Exception e) 
    	{  
            e.printStackTrace();  
        }  
    }  
 
    /**  
     * 新建文件  
     *   
     * @param filePathAndName  
     *            String 文件路径及名称 如c:/fqf.txt  
     * @param fileContent  
     *            String 文件内容  
     * 
     */ 
    public void newFile(String filePathAndName, String fileContent) {  
 
        try {  
            String filePath = filePathAndName;  
            filePath = filePath.toString();  
            File myFilePath = new File(filePath);  
            if (!myFilePath.exists()) { 
               if(myFilePath.createNewFile())
               {
            	   logger.info("Created file {}",myFilePath.getAbsolutePath());
               }
               else
               {
            	   logger.info("Unable to created file {}",myFilePath.getAbsolutePath());
               }
            }  
            FileWriter resultFile = new FileWriter(myFilePath);  
            PrintWriter myFile = new PrintWriter(resultFile);  
            String strContent = fileContent;  
            myFile.println(strContent);  
            myFile.close();
            resultFile.close();  
            }
        catch (Exception e) {  
            e.printStackTrace();  
        }   
    }  
    
    /**  
     * 删除文件  
     *   
     * @param filePathAndName  
     *            String 文件路径及名称 如c:/fqf.txt  
    * @param fileContent  
     *            String  
     *   
     */ 
    public void delFile(String filePathAndName) {  
        try {  
            String filePath = filePathAndName;  
            filePath = filePath.toString();  
            java.io.File myDelFile = new java.io.File(filePath);  
            if(myDelFile.delete())
            {
            	logger.info("Delete");
            }
            else
            {
            	logger.info("Delete Fail");
            }
 
        } 
        catch (Exception e) {   
            e.printStackTrace();  
 
        }  
 
    }  
 
    /**  
     * 删除文件夹  
     *   
     * @param filePathAndName  
     *            String 文件夹路径及名称 如c:/fqf  
     * @param fileContent  
     *            String  
     *
     */ 
    public void delFolder(String folderPath) {  
        try {  
            delAllFile(folderPath); // 删除完里面所有内容  
            String filePath = folderPath;  
            filePath = filePath.toString();  
            java.io.File myFilePath = new java.io.File(filePath);  
            if(myFilePath.delete()) // 删除空文件夹  
            {
            	logger.info("Delete");
            }
            else
            {
            	logger.info("Delete Fail");
            }
 
        } catch (Exception e) {  
            e.printStackTrace();  
 
        }  
 
    }  
 
    /**  
     * 删除文件夹里面的所有文件  
     *   
     * @param path  
     *            String 文件夹路径 如 c:/fqf  
     */ 
    public void delAllFile(String path) {  
        File file = new File(path);  
        if (!file.exists()) {  
            return;  
        }  
        if (!file.isDirectory()) {  
            return;  
        }  
        String[] tempList = file.list();  
        File temp = null;  
        for (int i = 0; i < tempList.length; i++) {  
            if (path.endsWith(File.separator)) {  
                temp = new File(path + tempList[i]);  
           } else {  
                temp = new File(path + File.separator + tempList[i]);  
            }  
            if (temp.isFile()) {  
                if(temp.delete())
                {
                	logger.info("Delete");
                }
                else
                {
                	logger.info("Delete Fail");
                }
            }  
            if (temp.isDirectory()) {  
                delAllFile(path + "/ " + tempList[i]);// 先删除文件夹里面的文件  
                delFolder(path + "/ " + tempList[i]);// 再删除空文件夹  
            }  
        }  
    }  
 
    /**  
     * 复制文件
     * @param oldPath  
     *            String 原文件路径 如：c:/fqf.txt  
     * @param newPath  
     *            String 复制后路径 如：f:/fqf.txt  
     *  
     */ 
    /*
    public void copyFile(String oldPath, String newPath) {  
    	 
        try {  
        	int bytesum=0;
            int byteread = 0;  
            File oldfile = new File(oldPath);  
            if (oldfile.exists()) { // 文件存在时 
            	InputStream inStream = new FileInputStream(oldPath); // 读入原文件  
            	FileOutputStream fs = new FileOutputStream(newPath); 
                byte[] buffer = new byte[1444];  
                while ((byteread = inStream.read(buffer)) != -1) {  
                    bytesum += byteread; // 字节数 文件大小  
                    fs.write(buffer, 0, byteread);  
                } 
                inStream.close(); 
                fs.close();
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
 
        }  
 
    }  */
 
    /**  
     * 复制整个文件夹内容  
     *   
     * @param oldPath  
     *            String 原文件路径 如：c:/fqf  
     * @param newPath  
     *            String 复制后路径 如：f:/fqf/ff  
     * 
     
    public void copyFolder(String oldPath, String newPath) {  
        try {
        	try{
            (new File(newPath)).mkdirs(); // 如果文件夹不存在 则建立新文件夹  
        	}
        	catch (Exception e) {  
                e.printStackTrace();  
     
            }  
            File a = new File(oldPath);  
            String[] file = a.list();
            File temp = null; 
            for (int i = 0; i < file.length; i++) {  
                if (oldPath.endsWith(File.separator)) {  
                    temp = new File(oldPath + file[i]);  
                } else {  
                    temp = new File(oldPath + File.separator + file[i]);  
                }  
 
                if (temp.isFile()) {  
                    FileInputStream input = new FileInputStream(temp);  
                    FileOutputStream output = new FileOutputStream(newPath  
                            + "/ " + (temp.getName()).toString());  
                    byte[] b = new byte[1024 * 5];  
                    int len;  
                    while ((len = input.read(b)) != -1) {  
                        output.write(b, 0, len);  
                    }  
                    output.flush();  
                    output.close();  
                    input.close();  
                }  
                if (temp.isDirectory()) {// 如果是子文件夹  
                    copyFolder(oldPath + "/ " + file[i], newPath + "/ " 
                            + file[i]);  
                }  
            }  
        } catch (Exception ee) {  
            ee.printStackTrace();  
 
        }  
 
    }   */ 
/**  
     * 移动文件到指定目录  
     *   
     * @param oldPath  
     *            String 如：c:/fqf.txt  
     * @param newPath  
     *            String 如：d:/fqf.txt  
     
    public void moveFile(String oldPath, String newPath) {  
        copyFile(oldPath, newPath);  
        delFile(oldPath);  
 
    } */  
 
    /**  
     *      * 移动文件夹到指定目录  
     *   
     * @param oldPath       *            String 如：c:/fqf  
     * @param newPath  
     *            String 如：d:/fqf  
    
    public void moveFolder(String oldPath, String newPath) {  
        copyFolder(oldPath, newPath);  
        delFolder(oldPath);  
    }  
    */ 
 
} 
 